home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
IDLIncludes
/
BlockStoragePlugin.idl
< prev
next >
Wrap
Text File
|
1996-05-01
|
36KB
|
1,027 lines
/*
File: BlockStoragePlugin.idl
Contains: Block Storage Plug In Programming Interface
Version: Technology: Copland
Release: Universal Interfaces 3.0d3 on Copland DR1
Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
Bugs?: If you find a problem with this file, send the file and version
information (from above) and the problem description to:
Internet: apple.bugs@applelink.apple.com
AppleLink: APPLE.BUGS
*/
#ifndef __BLOCKSTORAGEPLUGIN_IDL__
#define __BLOCKSTORAGEPLUGIN_IDL__
#include <somobj.idl>
#include <somcls.idl>
#ifndef __TYPES_IDL__
#include <Types.idl>
#endif
#ifndef __ERRORS_IDL__
#include <Errors.idl>
#endif
#ifndef __FILEMANAGERTYPES_IDL__
#include <FileManagerTypes.idl>
#endif
#ifndef __NAMEREGISTRY_IDL__
#include <NameRegistry.idl>
#endif
#ifndef __BLOCKSTORAGE_IDL__
#include <BlockStorage.idl>
#endif
#ifndef __IOMEMORYLISTS_IDL__
#include <IOMemoryLists.idl>
#endif
#ifdef __SOMIDL__
#if FOR_SYSTEM8_PREEMPTIVE
/*
******************************************************************************
*******************************************************************************
*******************************************************************************
Plug In Constants
*******************************************************************************
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
Options to a BSIOFunc
*****************************************************************************
*/
/*
******************************************************************************
Mapping Plug-In Level of Confidence values
*****************************************************************************
*/
typedef UInt32 BSMPIConfidenceLevel;
/*
******************************************************************************
Mapping Plug-In Level of Confidence values
*****************************************************************************
*/
typedef UInt32 BSCPIConfidenceLevel;
/*
******************************************************************************
Plug In Version - this tracks the revision of the plug-in interface and
should be placed in the version field of the plug-in interface structure
*****************************************************************************
*/
/*
******************************************************************************
BSIOStatus values
*****************************************************************************
*/
typedef UInt32 BSIOStatus;
/*
******************************************************************************
*******************************************************************************
*******************************************************************************
Types
*******************************************************************************
*******************************************************************************
*****************************************************************************
*/
typedef OpaquePtr BSStorePtr; /* Substituted OpaquePtr for ``void*'' */
typedef OpaquePtr BSContainerPtr; /* Substituted OpaquePtr for ``void*'' */
typedef OpaquePtr BSIORequestBlockPtr; /* Substituted OpaquePtr for ``void*'' */
typedef OSStatus BSIOErrors;
/*
******************************************************************************
BSErrorList: another structure to manage I/O success/failure.
BSErrorList data structure allows a Mapping Plug-In to keep track of the
current state of each transfer request sent to it by the Block Storage client. If transfers complete
successfully, a pointer 0 is returned. If an error occurs, a linked list (?) of these data structures
is returned specifying the exact state of each transfer request.
startingBlock: The initial transfer block of this fragment of the request
blockCount: The number of blocks to be transfered including the startingBlock
status: A constant representing the final state of the transfer of the blocks:
kIONotStarted: No processing was begun on these blocks
kIOStarted: The BS Plug-In began to process the blocks
kIOToFamily: The request was sent to the device family
kIOComplete: The request completed normally
kIOFailed: The request failed to complete execution
error: The exact error, if any
xferID: An index representing which request of a multiple-request I/O this is
next: A pointer to the next data structure (could be eliminated in favor of indices)
*****************************************************************************
*/
typedef SOMLargeStruct BSErrorList; /* Derived from a struct of 32 bytes in size */
typedef OpaquePtr BSErrorListPtr; /* Substituted OpaquePtr for ``BSErrorList*'' */
/*
****************************************************************************
BSStoreMPIComponent describes a component of a Store. A component may
be an external device or another Store. This is the internal form of
BSStoreComponent.
***************************************************************************
*/
typedef SOMLargeStruct BSStoreMPIComponent; /* Derived from a struct of 357 bytes in size */
typedef OpaquePtr BSStoreMPIComponentPtr; /* Substituted OpaquePtr for ``BSStoreMPIComponent*'' */
/*
******************************************************************************
BSStoreMPIInfo - Information about the Store that the Mapping Plug-in can
provide
*****************************************************************************
*/
typedef SOMLargeStruct BSStoreMPIInfo; /* Derived from a struct of 228 bytes in size */
typedef OpaquePtr BSStoreMPIInfoPtr; /* Substituted OpaquePtr for ``BSStoreMPIInfo*'' */
/*
******************************************************************************
BSStorePPIInfo - Information about the Store that the Partitioning Plug-in
can provide
*****************************************************************************
*/
typedef SOMLargeStruct BSStorePPIInfo; /* Derived from a struct of 8 bytes in size */
typedef OpaquePtr BSStorePPIInfoPtr; /* Substituted OpaquePtr for ``BSStorePPIInfo*'' */
/*
******************************************************************************
BSContainerPIInfo - Information about the Container that the Container
Plug-in can provide
*****************************************************************************
*/
typedef SOMLargeStruct BSContainerPIInfo; /* Derived from a struct of 5 bytes in size */
typedef OpaquePtr BSContainerPIInfoPtr; /* Substituted OpaquePtr for ``BSContainerPIInfo*'' */
/*
******************************************************************************
*******************************************************************************
*******************************************************************************
Plug-In Interface Functions
*******************************************************************************
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
*******************************************************************************
Mapping Plug-In Interface
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
BSMappingPIExamine - Plug-in's opportunity to examine a device and determine
if it is an appropriate plug-in for it
Inputs: examineStore - a pointer to the in-process Store to be examined
Outputs: confidence - level of confidence the plug-in has that the plugin
is the correct one
Returns: E_BSSuccess if no errors happened examining the device.
If an error happened, the error received from the other family is
returned
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIExamine;
/*
******************************************************************************
BSMappingPIInit - Plug-in's initialization routine. Called when plug-in
is selected for a Store. Plug-in's opportunity to initialize
device, allocate data structures, etc.
Inputs: initStore - a pointer to the Store this plug-in will be attached
to
Outputs: curState - the current state of the media
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIInit;
/*
******************************************************************************
BSMappingPICleanup - Plug-in's dispose routine. Called when Store is
being disposed of. Should dispose of any memory or data structures
held for this Store, finalize all I/O for Store
Inputs: cleanupStore - Store that is being disposed of
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSMappingPICleanup;
/*
******************************************************************************
BSMappingPIIO - Plug-in's input/output routine
Inputs: ioStore - the Store on which IO is to be performed
blocks - descriptor of the blocks to do IO on
memory - descriptor of the memory to do IO on (memory has been prepared)
parentRequest - the request this request is being made on behalf of
options - read/write
Outputs: errors - where exactly the errors occured, if any
Returns: kBSIOContinuing if IO was started successfully and the I/O
completion routine still needs to be called
kBSIOCompleted if IO was completed and no further action is
necessary
kBSIOFailed if IO failed for some reason
kBSIONotStarted if the IO could not be started
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIIO;
/*
******************************************************************************
BSMappingPIFlush - flush plug-in's cached data (if any)
BSMappingPIFlush flushes the plug-in's cached data. It is called
in a similar fashion to an I/O request. BSStoreRW may be used
as may BSStoreFlush.
Inputs: flushStore - the Store on which flush is to be performed
parentRequest - the request this request is being made on behalf of
Outputs: errors - where exactly the errors occured, if any
Returns: kBSIOContinuing if IO was started successfully and the I/O
completion routine still needs to be called
kBSIOCompleted if IO was completed and no further action is
necessary
kBSIOFailed if IO failed for some reason
kBSIONotStarted if the IO could not be started
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIFlush;
/*
******************************************************************************
BSMappingPIAddComponent - Notifies Plug-in about new components to be added
to it
Inputs: destStore - the Store the blocks are to be mapped into
newComponent - the new Component to be mapped in
Outputs: storeNewInfo - the new information about the Store
Returns: E_BSSuccess if successful
E_BSMPITooManyMappings if no more mappings can be handled
E_BSMPIOutOfStoreBounds if the start of the destination blocks
would cause a gap in the Store
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIAddComponent;
/*
******************************************************************************
BSMappingPIGoToState - Requests plug-in to take Store to the specified
accessibility state.
Inputs: theStore - Store to take to the state
gotoState - what state to go to (possible states defined above)
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIGoToState;
/*
******************************************************************************
BSMappingPIFormatMedia - tells plug-in to do a low-level format of the media
Inputs: formatStore - Store to format
Outputs: <none>
Returns: E_BSSuccessful if successful
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIFormatMedia;
/*
******************************************************************************
BSMappingPIGetInfo - gets information about the device and the plug-in
Inputs: formatStore - Store to format
Outputs: info - the filled in information
Returns: E_BSSuccessful if successful
*****************************************************************************
*/
typedef OpaquePtr BSMappingPIGetInfo;
/*
******************************************************************************
BSMappingIOCompletion - I/O completion routine for a mapping plug-in
Inputs: theStore: - A pointer to the Store in question
finishedPrivateData - A pointer to the private data the Mapping
plug-in associated with this I/O
returnedBSErrorList - A pointer to a BSErrorList if the
triggering event came from another BS plug-in
returnedStatus - The OSStatus returned by the other family or
plug-in that was called
Outputs: errorListPtrPtr - A pointer to a pointer to a BSErrorList.
The BSErrorList is allocated and filled in by the completion
routine if the I/O has failed. It should be allocated using
BSErrorListAllocate and will be deallocated by the family code.
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSMappingIOCompletion;
typedef SOMLargeStruct BlockStoragePlugInInfo; /* Derived from a struct of 16 bytes in size */
typedef SOMLargeStruct BSStoreMappingOps; /* Derived from a struct of 56 bytes in size */
typedef OpaquePtr BSStoreMappingOpsPtr; /* Substituted OpaquePtr for ``BSStoreMappingOps*'' */
/*
******************************************************************************
BSMPIBackgroundTask - a background task entry point for a Mapping plug-in.
BSMPIStartBackgroundTask may be used by the Mapping plug-in to
start one of these. The task will be automatically terminated
after the Cleanup routine is executed
Inputs: theStore - the Store this is running for
theArg - the argument passed to BSMPIStartBackgroundTask
Outputs: <none>
Returns: Errors are ignored but will be logged.
*****************************************************************************
*/
typedef OpaquePtr BSMPIBackgroundTask;
/*
******************************************************************************
*******************************************************************************
Partitioning Plug-In Interface
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
BSPartitioningPIExamine - Plug-in's opportunity to examine a Store and
determine if it's the right plug-in for it
Inputs: readStoreConn - a connection to the Store to be examined
Outputs: certainty - 0 if the plug-in did not recognize the partition
map format
otherwise the number of bytes read
Returns: E_BSSuccess if no errors occured
E_BSPPIOutOfResources if memory or other resource couldn't
be allocated
otherwise the Block Storage error from the I/O
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPIExamine;
/*
******************************************************************************
BSPartitioningPIInit - Plug-in's initialization routine. Called when
plug-in is selected for a Store. Plug-in's opportunity to
initialize device, allocate data structures, etc.
Inputs: initStore - pointer to the Store the plug-in is being attached to
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPIInit;
/*
******************************************************************************
BSPartitioningPICleanup - Plug-in's dispose routine. Called when Store is
being disposed of. Should dispose of any memory or data structures
held for this Store and flush the partition map if necessary
Inputs: cleanupStore - Store that is being disposed of
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPICleanup;
/*
******************************************************************************
BSPartitioningPIInitializeMap - lays down a new partition map on a Store (plug-in has
already been attached)
Inputs: initStore - the Store to be initialized
Outputs: <none>
Returns: E_BSSuccess if successful
otherwise, Block Storage error if I/O fails
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPIInitializeMap;
/*
******************************************************************************
BSPartitioningPIGetInfo - Gets information about the partition map and the
partitioning plug-in
Inputs: store - the Store to read from
Outputs: info - the filled in information
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPIGetInfo;
/*
******************************************************************************
BSPartitioningPIGetEntry - Get a particular partition map entry
Inputs: readStore - the Store
entryNum - which entry to read
Outputs: retEntry - pointer to a BSPartitionDescriptor that's filled in
with the entry
Returns: E_BSSuccess if successful
E_BSPPIPartitionNonExistant if that entry does not exist
other Block Storage error if I/O problem
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPIGetEntry;
/*
******************************************************************************
BSPartitioningSetEntry - Sets the information in a particular partition map
entry
Inputs:
Outputs:
Returns:
*****************************************************************************
*/
typedef OpaquePtr BSPartitioningPISetEntry;
typedef SOMLargeStruct BSStorePartitioningOps; /* Derived from a struct of 44 bytes in size */
typedef OpaquePtr BSStorePartitioningOpsPtr; /* Substituted OpaquePtr for ``BSStorePartitioningOps*'' */
/*
******************************************************************************
*******************************************************************************
Container Plug-In Interface
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
BSContainerPIExamine - Called to allow the Container plug-in to verify
that it is correct for the Container
Inputs: initContainer - the Container in question
Outputs: levelOfConfidence - how confident the plug-in is that it is the
correct one
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPIExamine;
/*
******************************************************************************
BSContainerPIInit - Plug-in's initialization routine. Called when
plug-in is selected for a Container. Plug-in's opportunity to
initialize device, allocate data structures, etc.
Inputs: initContainer - a pointer to the Container this plug-in will
be attached to
Outputs: info - information about the new Container
backgroundTask - if true, the BackgroundTask entry point will
be invoked in its own private task.
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPIInit;
/*
******************************************************************************
BSContainerPICleanup - cleans up plug-in state
Inputs: container - the Container to clean up for
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPICleanup;
/*
******************************************************************************
BSContainerPIGoToState - Tells the Container to go the specified state
Inputs: container - the Container to take to the state
accessState - the state to go to
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPIGoToState;
/*
******************************************************************************
BSContainerPIAddContainer - Informs the Container of a new sub-Container
being added
Inputs: destContainer - the Container we're adding to
addedContainer - the Container being added
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPIAddContainer;
/*
******************************************************************************
BSContainerPIGetInfo - Gets information about a Container
Inputs: infoContainer - the Container to get information about
Outputs: info - the filled in information buffer
Returns: E_BSSuccess if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPIGetInfo;
/*
******************************************************************************
BSContainerPIBackgroundTask - an optional entry point that will be executed
within its own task context if the backgroundTask flag is set on exit
from the Container Plug-in's init routine
Inputs: container - the Container the Background Task is being invoked
on behalf of
Outputs: <none>
Returns: E_BSSuccessful if successful
*****************************************************************************
*/
typedef OpaquePtr BSContainerPIBackgroundTask;
typedef SOMLargeStruct BSContainerPolicyOps; /* Derived from a struct of 44 bytes in size */
typedef OpaquePtr BSContainerPolicyOpsPtr; /* Substituted OpaquePtr for ``BSContainerPolicyOps*'' */
/*
******************************************************************************
BSCPIBackgroundTask - a background task entry point for a Container plug-in.
BSCPIStartBackgroundTask may be used by the Container plug-in to
start one of these. The task will be automatically terminated
after the Cleanup routine is executed
Inputs: theContainer - the Container this is running for
theArg - the argument passed to BSMPIStartBackgroundTask
Outputs: <none>
Returns: Errors are ignored but will be logged.
*****************************************************************************
*/
typedef OpaquePtr BSCPIBackgroundTask;
/*
******************************************************************************
*******************************************************************************
*******************************************************************************
Block Storage Family Services
*******************************************************************************
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
BSStoreRW - Request I/O from another Store. Used by Mapping Plug-ins.
Not for use by Partitioning Plug-ins!!
Inputs: rwStore - the Store to do I/O with
blocks - the blocks for the transfer
memory - the memory for the transfer
parentRequest - the BSIORequestPtr that the requestor was called
with
privateData - pointer to be given to the completion routine
when it is called
options - read/write
Outputs: errors - where errors occurred, if any occurred
Returns: return code from other plug-in
*****************************************************************************
*/
/*
******************************************************************************
BSStoreFlush - Request another Store to flush its caches. Used by Mapping Plug-ins.
Not for use by Partitioning Plug-ins!!
Inputs: flushStore - the Store to flush
parentRequest - the BSIORequestPtr that the requestor was called
with
privateData - pointer to be given to the completion routine
when it is called
Outputs: errors - where errors occurred, if any occurred
Returns: return code from other plug-in
*****************************************************************************
*/
/*
******************************************************************************
BSTrackOtherFamilyRequest - informs the Block Storage family code what routine
should be called when the other I/O family the request is being passed to
notifies the Block Storage family of its completion. The Mapping plug-in's
ioCompletion routine will be called when the notification of the request
completion is received.
Inputs: ioStore - Store I/O is taking place in
curRequest - BSIORequestBlock for which this I/O is taking place.
This was the BSIORequestBlockPtr passed into the R/W
routine.
privateData - Private data to be passed back when the completion routine
is called.
retNotify - Pointer to a kernel notification structure that will
be filled in by BSTrackOtherFamilyRequest to be given
to the other family in the async API call
Outputs: <none>
Returns: E_BSSuccess if able to track request
*****************************************************************************
*/
/*
******************************************************************************
BSMPIStartBackgroundTask - starts a background task for a Mapping Plug-in.
The task will be terminated after the Cleanup routines for the Plug-in
is called for this Store.
Inputs: store - the Store the background task is being started for
backgroundTask - the function to start
arg - the argument to be passed to the function
Outputs: taskID - the task ID of the new task
Returns: E_BSSuccess if successful
*****************************************************************************
*/
/*
******************************************************************************
BSCPIStartBackgroundTask - starts a background task for a Container Plug-in.
The task will be terminated after the Cleanup routines for the Plug-in
is called for this Container.
Inputs: container - the Container the background task is being started for
backgroundTask - the function to start
arg - the argument to be passed to the function
Outputs: taskID - the task ID of the new task
Returns: E_BSSuccess if successful
*****************************************************************************
*/
/*
******************************************************************************
*******************************************************************************
Store Accessor functions
*******************************************************************************
*****************************************************************************
*/
/*
******************************************************************************
BSGetMappingPIPrivateData - retrieves the Mapping Plug-in's private data
from a Store
Inputs: accessStore - the Store to retrieve the data from
Outputs: <none>
Returns: pointer to data
*****************************************************************************
*/
/*
******************************************************************************
BSSetMappingPIPrivateData - sets the Mapping Plug-in's private data
for a Store
Inputs: accessStore - the Store to set the data in
privateData - pointer to the data
Outputs: <none>
Returns: <none>
*****************************************************************************
*/
/*
******************************************************************************
BSGetPartitioningPIPrivateData - retrieves the Partitioning Plug-in's private
data from a Store
Inputs: accessStore - the Store to retrieve the data from
Outputs: <none>
Returns: pointer to data
*****************************************************************************
*/
/*
******************************************************************************
BSSetPartitioningPIPrivateData - sets the Partitioning Plug-in's private data
for a Store
Inputs: accessStore - the Store to set the data in
privateData - pointer to the data
Outputs: <none>
Returns: <none>
*****************************************************************************
*/
/*
******************************************************************************
BSStoreGetNumComponents - Gets the number of component Stores or Devices
that have been put together into this Store
Inputs: accessStore - the Store to get the number of components from
Outputs: <none>
Returns: number of components
*****************************************************************************
*/
/*
******************************************************************************
BSStoreGetComponents - Gets the information about a particular component
of a Store
Inputs: accessStore - the Store to get the number of components from
componentNum - which component to return
Outputs: component - the BSStoreComponent buffer that is filled in
Returns: E_BSSuccess if no problems
*****************************************************************************
*/
/*
******************************************************************************
BSStoreSetNumPartitions - sets the number of partitions in the Store
Inputs: accessStore - the Store to get the number of components from
numPartitions - the new partition count
Outputs: <none>
Returns: <none>
*****************************************************************************
*/
/*
******************************************************************************
BSStoreGetPPIConnection - Gets the Store connection for the partitioning
plug-ins
Inputs: accessStore - the Store to get connection from
Outputs: <none>
Returns: Connection to the Store (kInvalidID if none)
*****************************************************************************
*/
/*
******************************************************************************
BSStoreGetAccessibilityState - Gets the current accessibility state of the Store
Inputs: accessStore - the Store to get connection from
Outputs: <none>
Returns: Store's state
*****************************************************************************
*/
/*
******************************************************************************
BSStoreSetAccessibilityState - Sets the current accessibility state of the Store
Inputs: accessStore - the Store to get connection from
setState - the state to set the Store to
Outputs: <none>
Returns: <none>
*****************************************************************************
*/
/*
******************************************************************************
BSStoreGetMPIInfo - Calls the GetInfo routine of the Mapping plug-in
attached to the Store
Inputs: accessStore - the Store to get connection from
info - a pointer to the buffer to put the returned info into
Outputs: <none>
Returns: <none>
*****************************************************************************
*/
/*
******************************************************************************
BSStoreGetPPIInfo - Calls the GetInfo routine of the Partitioning plug-in
attached to the Store
Inputs: accessStore - the Store to get connection from
info - a pointer to the buffer to put the returned info into
Outputs: <none>
Returns: <none>
*****************************************************************************
*/
/*
******************************************************************************
BSMPINotifyFamilyStoreChangedState - called from a Mapping Plug-in (typically
in the BackgroundTask) to inform the Block Storage Family of an
unexpected accessibility change, e.g. the media was removed or the disk
spun down.
Inputs: changedStore - the Store that changed
newState - the state the Store is now in
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
/*
******************************************************************************
BSMPIRequestStoreStateChange - requests a state change of the Store. This
should be used, for example, if a device has an eject button that can
be monitored by the Mapping Plug-in. If the eject button is pressed
BSMPIRequestStoreStateChange should be used to notify the Family that
an eject has been requested and the Family can then notify clients and
flush data to the media properly. This call waits until permission is
granted or denied by the Expert. The GoToState call of the plug-in
will be invoked before this calls returns if permission is granted.
Inputs: changeStore - the Store the state change will affect
requestedState - the state the Store is being requested to go to
Outputs: permission - true if permission was granted and the Store
successfully went to the State requested.
Returns: E_BSSuccess if successful
*****************************************************************************
*/
/*
******************************************************************************
BSCPINotifyFamilyContainerChangedState - called from a Container Plug-in
(typically in the BackgroundTask) to inform the Block Storage Family of
an unexpected accessibility change, e.g. the media was removed.
Inputs: changedStore - the Store that changed
newState - the state the Store is now in
Outputs: <none>
Returns: E_BSSuccess if successful
*****************************************************************************
*/
/*
******************************************************************************
BSCPIRequestContainerStateChange - requests a state change of the Container.
This should be used, for example, if a device has an eject button that
can be monitored by the Container Plug-in. If the eject button is pressed
BSCPIRequestStoreStateChange should be used to notify the Family that
an eject has been requested and the Family can then notify clients and
flush data to the media properly. This call waits until permission is
granted or denied by the Expert. The GoToState call of the plug-in
will be invoked before this calls returns if permission is granted.
Inputs: changeContainer - the Container the state change will affect
requestedState - the state the Container is being requested to go to
Outputs: permission - true if permission was granted and the Container
successfully went to the State requested.
Returns: E_BSSuccess if successful
*****************************************************************************
*/
#endif
#endif /* __SOMIDL__ */
#endif /* __BLOCKSTORAGEPLUGIN_IDL__ */